<HTML STYLE="width: {?x}px; height: {?y}px">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<HEAD>
        <TITLE>UnrealSpeccy: current key bindings</TITLE>
</HEAD>

<BODY BGCOLOR="Gray" TEXT="white">

<a href="#mainkeys"> </a>

<CENTER> <H1> Emulator keys </H1> </ENTER>

<table border=2>
<tr> <td> <B>{main.exit}</B> </td>
<td> exit emulator </td> </tr>
<tr> <td> <B>{main.settings}</B> </td>
<td> configure emulator </td> </tr>
<tr> <td> <B>{main.lockmouse}</B> </td>
<td> bind mouse in windowed mode to kempston mouse</td> </tr>
<tr> <td> <B>{main.monitor}</B> </td>
<td> enter debugger </td> </tr>
<tr> <td> <B>{main.selectfilter}</B> </td>
<td> select video filter for output </td> </tr>
<tr> <td> <B>{main.selectdriver}</B> </td>
<td> select driver for filters, working through driver </td> </tr>
<tr> <td> <B>{main.fullscreen}</B> </td>
<td> toggle full-screen on/off (only for GDI, Overlay, or ddraw blitter video modes)</td> </tr>
<tr> <td> <B>{main.pause}</B> </td>
<td> pause </td> </tr>
<tr> <td> <B>{main.selectfix}</B> </td>
<td> select video parameter for tune-up </td> </tr>
<tr> <td> <B>{main.selectsnd}</B> </td>
<td> select sound parameter for tune-up </td> </tr>
<tr> <td> <B>{main.incfix}</B> </td>
<td> increase selected parameter </td> </tr>
<tr> <td> <B>{main.decfix}</B> </td>
<td> decrease selected parameter </td> </tr>
<tr> <td> <B>{main.incfix10}</B> </td>
<td> coarse increase selected parameter </td> </tr>
<tr> <td> <B>{main.decfix10}</B> </td>
<td> coarse decrease selected parameter </td> </tr>
<tr> <td> <B>{main.leds}</B> </td>
<td> toggle on-screen leds</td> </tr>
<tr> <td> <B>{main.maxspeed}</B> </td>
<td> toggle max. speed</td> </tr>
<tr> <td> <B>{main.pokedialog}</B> </td>
<td> show poke dialog</td> </tr>
<tr> <td> <B>{main.starttape}</B> </td>
<td> start tape </td> </tr>
<tr> <td> <B>{main.tapebrowser}</B> </td>
<td> show tape browser </td> </tr>
<tr> <td> <B>{main.screenshot}</B> </td>
<td> write screenshot </td> </tr>
<tr> <td> <B>{main.reset}</B> </td>
<td> reset to default mode </td> </tr>
<tr> <td> <B>{main.reset128}</B> </td>
<td> reset to 128K </td> </tr>
<tr> <td> <B>{main.resetsys}</B> </td>
<td> reset to service ROM </td> </tr>
<tr> <td> <B>{main.reset48}</B> </td>
<td> reset to 48K </td> </tr>
<tr> <td> <B>{main.resetbasic}</B> </td>
<td> reset to 48K basic with unlocked high memory </td> </tr>
<tr> <td> <B>{main.resetdos}</B> </td>
<td> reset to TR-DOS </td> </tr>
<tr> <td> <B>{main.resetcache}</B> </td>
<td> reset to cache </td> </tr>
<tr> <td> <B>{main.nmi}</B> </td>
<td> generate NMI </td> </tr>
<tr> <td> <B>{main.nmidos}</B> </td>
<td> select TR-DOS and generate NMI (&quotMAGIC&quot button) </td> </tr>
<tr> <td> <B>{main.nmicache}</B> </td>
<td> select cache and generate NMI </td> </tr>
<tr> <td> <B>{main.help}</B> </td>
<td> show this help </td> </tr>
<tr> <td> <B>{main.save}</B> </td>
<td> save disk or memory image </td> </tr>
<tr> <td> <B>{main.load}</B> </td>
<td> load disk or memory image </td> </tr>
<tr> <td> <B>{main.savesound}</B> </td>
<td> start sound recording </td> </tr>
<tr> <td> <B>{main.qsave1}</B> </td>
<td> quick-save to slot 1 </td> </tr>
<tr> <td> <B>{main.qsave2}</B> </td>
<td> quick-save to slot 2 </td> </tr>
<tr> <td> <B>{main.qsave3}</B> </td>
<td> quick-save to slot 3 </td> </tr>
<tr> <td> <B>{main.qload1}</B> </td>
<td> quick-load from slot 1 </td> </tr>
<tr> <td> <B>{main.qload2}</B> </td>
<td> quick-load from slot 2 </td> </tr>
<tr> <td> <B>{main.qload3}</B> </td>
<td> quick-load from slot 3 </td> </tr>
<tr> <td> <B>{main.keystick}</B> </td>
<td> toggle sticky-keys mode </td> </tr>
<tr> <td> <B>{main.autofire}</B> </td>
<td> toggle autofire mode </td> </tr>
<tr> <td> <B>{main.saveall}</B> </td>
<td> save CMOS and unsaved diskette images </td> </tr>
<tr> <td> <B>{main.xtkbd}</B> </td>
<td> enable/disable ATM XT keyboard controller (emulation control keys will be disabled in this mode) </td> </tr>
<tr> <td> <B>{main.pastetext}</B> </td>
<td> copy text from clipboard to keyboard buffer </td> </tr>
<tr> <td> <B>{main.memsearch}</B> </td>
<td> search in memory for changed values (cheats, etc) </td> </tr>
<tr> <td> <B>{main.size1}</B> </td>
<td> set normal window size in windowed mode </td> </tr>
<tr> <td> <B>{main.size2}</B> </td>
<td> set double window size in windowed mode </td> </tr>
<tr> <td> <B>{main.sizem}</B> </td>
<td> maximize window in windowed mode </td> </tr>

</table>

<a href="#monitor_keys"> </a>


<CENTER> <H1> Debugger Keys </H1> </CENTER>

<table border=2>

<tr> <td> <B>{mon.exit}</B> </td>
<td> exit to system </td> </tr>

<tr> <td> <B>{mon.emul}</B> </td>
<td> back to emulation </td> </tr>

<tr> <td> <B>{mon.settigns}</B> </td>
<td> configure emulator </td> </tr>

<tr> <td> <B>{mon.bpdialog}</B> </td>
<td> breakpoints manager </td> </tr>

<tr> <td> <B>{mon.gs}</B> </td>
<td> general sound status dialog </td> </tr>

<tr> <td> <B>{mon.pokedialog}</B> </td>
<td> enter pokes </td> </tr>

<tr> <td> <B>{mon.tapebrowser}</B> </td>
<td> tape browser </td> </tr>

<tr> <td> <B>{mon.reset128}</B> </td>
<td> reset to 128K </td> </tr>
<tr> <td> <B>{main.resetsys}</B> </td>
<td> reset to service ROM </td> </tr>
<tr> <td> <B>{mon.reset48}</B> </td>
<td> reset to 48K </td> </tr>
<tr> <td> <B>{mon.resetbasic}</B> </td>
<td> reset to 48K basic with unlocked high memory </td> </tr>
<tr> <td> <B>{mon.resetdos}</B> </td>
<td> reset to TR-DOS </td> </tr>
<tr> <td> <B>{mon.resetcache}</B> </td>
<td> reset to cache </td> </tr>
<tr> <td> <B>{mon.nmi}</B> </td>
<td> generate NMI </td> </tr>
<tr> <td> <B>{mon.nmidos}</B> </td>
<td> select TR-DOS and generate NMI (&quotMAGIC&quot button) </td> </tr>
<tr> <td> <B>{mon.nmicache}</B> </td>
<td> select cache and generate NMI </td> </tr>
<tr> <td> <B>{mon.help}</B> </td>
<td> show this help </td> </tr>
<tr> <td> <B>{mon.save}</B> </td>
<td> save disk or memory image </td> </tr>
<tr> <td> <B>{mon.load}</B> </td>
<td> load disk or memory image </td> </tr>
<tr> <td> <B>{mon.savesound}</B> </td>
<td> start sound recording </td> </tr>
<tr> <td> <B>{mon.qsave1}</B> </td>
<td> quick-save to slot 1 </td> </tr>
<tr> <td> <B>{mon.qsave2}</B> </td>
<td> quick-save to slot 2 </td> </tr>
<tr> <td> <B>{mon.qsave3}</B> </td>
<td> quick-save to slot 3 </td> </tr>
<tr> <td> <B>{mon.qload1}</B> </td>
<td> quick-load from slot 1 </td> </tr>
<tr> <td> <B>{mon.qload2}</B> </td>
<td> quick-load from slot 2 </td> </tr>
<tr> <td> <B>{mon.qload3}</B> </td>
<td> quick-load from slot 3 </td> </tr>

<tr> <td> <B>{mon.screen}</B> </td>
<td> show spectrum screen, as it present in video memory </td> </tr>

<tr> <td> <B>{mon.altscreen}</B> </td>
<td> show 128K spectrum screen at bank#7 </td> </tr>

<tr> <td> <B>{mon.rayscreen}</B> </td>
<td> show painted screen area until crt-ray (with MC, border & 2-scr effects) </td> </tr>

<tr> <td> <B>{mon.step}</B> </td>
<td> trace single Z80 M1 cycle </td> </tr>

<tr> <td> <B>{mon.stepover}</B> </td>
<td> trace Z80 over loops, calls, etc... </td> </tr>

<tr> <td> <B>{mon.exitsub}</B> </td>
<td> trace until word in (PC) (designed for 'exit routine') </td> </tr>

<tr> <td> <B>{mon.loadblock}</B> </td>
<td> load memory block </td> </tr>

<tr> <td> <B>{mon.saveblock}</B> </td>
<td> save/disasm memory block </td> </tr>

<tr> <td> <B>{mon.fillblock}</B> </td>
<td> fill memory block with pattern </td> </tr>

<tr> <td> <B>{mon.setbank}</B> </td>
<td> write to port #7FFD </td> </tr>

<tr> <td> <B>{mon.sethimem}</B> </td>
<td> write to model-specific extended memory port </td> </tr>

<tr> <td> <B>{mon.next}</B> </td>
<td> next window </td> </tr>

<tr> <td> <B>{mon.prev}</B> </td>
<td> prev. window </td> </tr>

<tr> <td> <B>{mon.dump}</B> </td>
<td> toggle mode of dump window </td> </tr>

<tr> <td> <B>{mon.rip}</B> </td>
<td> activate ripper's tool </td> </tr>

<tr> <td> <B>{mon.osw}</B> </td>
<td> configure on-screen watches </td> </tr>

<tr> <td> <B>{mon.scrshot}</B> </td>
<td> toggle screenshot/screendump/watches </td> </tr>

<tr> <td> <B>{mon.setwatch}</B> </td>
<td> set user-defined watch address </td> </tr>

<tr> <td> <B>{mon.switchay}</B> </td>
<td> switch active AY (turbo-sound) </td> </tr>

<tr> <td> <B>{mon.labels}</B> </td>
<td> goto label </td> </tr>

<tr> <td> <B>{mon.memsearch}</B> </td>
<td> search in memory for changed values (cheats, etc) </td> </tr>

</table>

<CENTER> <H2> Debugger Keys - registers window </H2> </CENTER>

<table border=2>

<tr> <td> <B>{reg.left}</B> </td>
<td> left </td> </tr>

<tr> <td> <B>{reg.right}</B> </td>
<td> right </td> </tr>

<tr> <td> <B>{reg.up}</B> </td>
<td> up </td> </tr>

<tr> <td> <B>{reg.down}</B> </td>
<td> down </td> </tr>

<tr> <td> <B>{reg.edit}</B> </td>
<td> edit current register </td> </tr>

<tr> <td> <B>{reg.a}</B> </td>
<td> edit register 'A' </td> </tr>

<tr> <td> <B>{reg.f}</B> </td>
<td> edit flags </td> </tr>

<tr> <td> <B>{reg.bc}</B> </td>
<td> edit BC </td> </tr>

<tr> <td> <B>{reg.de}</B> </td>
<td> edit DE </td> </tr>

<tr> <td> <B>{reg.hl}</B> </td>
<td> edit HL </td> </tr>

<tr> <td> <B>{reg.pc}</B> </td>
<td> edit PC </td> </tr>

<tr> <td> <B>{reg.sp}</B> </td>
<td> edit SP </td> </tr>

<tr> <td> <B>{reg.ix}</B> </td>
<td> edit IX </td> </tr>

<tr> <td> <B>{reg.iy}</B> </td>
<td> edit IY </td> </tr>

<tr> <td> <B>{reg.i}</B> </td>
<td> edit I </td> </tr>

<tr> <td> <B>{reg.r}</B> </td>
<td> edit R </td> </tr>

<tr> <td> <B>{reg.im}</B> </td>
<td> toggle interrupt mode </td> </tr>

<tr> <td> <B>{reg.iff1}</B> </td>
<td> toggle iff1 </td> </tr>

<tr> <td> <B>{reg.iff2}</B> </td>
<td> toggle iff2 </td> </tr>

<tr> <td> <B>{reg.SF}</B> </td>
<td> toggle flag SF </td> </tr>

<tr> <td> <B>{reg.ZF}</B> </td>
<td> toggle flag ZF </td> </tr>

<tr> <td> <B>{reg.F5}</B> </td>
<td> toggle flag F5 </td> </tr>

<tr> <td> <B>{reg.HF}</B> </td>
<td> toggle flag HF </td> </tr>

<tr> <td> <B>{reg.F3}</B> </td>
<td> toggle flag F3 </td> </tr>

<tr> <td> <B>{reg.PF}</B> </td>
<td> toggle flag PF </td> </tr>

<tr> <td> <B>{reg.NF}</B> </td>
<td> toggle flag NF </td> </tr>

<tr> <td> <B>{reg.CF}</B> </td>
<td> toggle flag CF </td> </tr>

<tr> <td> <B>{reg.codejump}</B> </td>
<td> goto address in code window under cursor </td> </tr>

<tr> <td> <B>{reg.datajump}</B> </td>
<td> goto address in data window under cursor </td> </tr>

</table>

<CENTER> <H2> Debugger Keys - disasm window </H2> </CENTER>

<table border=2>

<tr> <td> <B>{cpu.findpc}</B> </td>
<td> set cursor at PC </td> </tr>

<tr> <td> <B>{cpu.here}</B> </td>
<td> trace to cursor </td> </tr>

<tr> <td> <B>{cpu.findtext}</B> </td>
<td> find string </td> </tr>

<tr> <td> <B>{cpu.findcode}</B> </td>
<td> find code with mask </td> </tr>

<tr> <td> <B>{cpu.goto}</B> </td>
<td> push cursor position and goto address </td> </tr>

<tr> <td> <B>{cpu.bpx}</B> </td>
<td> breakpoint under cursor </td> </tr>

<tr> <td> <B>{cpu.asm}</B> </td>
<td> edit instruction </td> </tr>

<tr> <td> <B>{cpu.setpc}</B> </td>
<td> set PC to cursor </td> </tr>

<tr> <td> <B>{cpu.up}</B> </td>
<td> up </td> </tr>

<tr> <td> <B>{cpu.down}</B> </td>
<td> down </td> </tr>

<tr> <td> <B>{cpu.left}</B> </td>
<td> left </td> </tr>

<tr> <td> <B>{cpu.right}</B> </td>
<td> right </td> </tr>

<tr> <td> <B>{cpu.pgdn}</B> </td>
<td> next page </td> </tr>

<tr> <td> <B>{cpu.pgup}</B> </td>
<td> prev. page </td> </tr>

<tr> <td> <B>{cpu.save1}</B> </td>
<td> save cursor position to slot 1 </td> </tr>

<tr> <td> <B>{cpu.save2}</B> </td>
<td> save cursor position to slot 2 </td> </tr>

<tr> <td> <B>{cpu.save3}</B> </td>
<td> save cursor position to slot 3 </td> </tr>

<tr> <td> <B>{cpu.save4}</B> </td>
<td> save cursor position to slot 4 </td> </tr>

<tr> <td> <B>{cpu.save5}</B> </td>
<td> save cursor position to slot 5 </td> </tr>

<tr> <td> <B>{cpu.save6}</B> </td>
<td> save cursor position to slot 6 </td> </tr>

<tr> <td> <B>{cpu.save7}</B> </td>
<td> save cursor position to slot 7 </td> </tr>

<tr> <td> <B>{cpu.save8}</B> </td>
<td> save cursor position to slot 8 </td> </tr>

<tr> <td> <B>{cpu.rest1}</B> </td>
<td> push cursor position to jumpstack and restore cursor position from slot 1 </td> </tr>

<tr> <td> <B>{cpu.rest2}</B> </td>
<td> push cursor position to jumpstack and restore cursor position from slot 2 </td> </tr>

<tr> <td> <B>{cpu.rest3}</B> </td>
<td> push cursor position to jumpstack and restore cursor position from slot 3 </td> </tr>

<tr> <td> <B>{cpu.rest4}</B> </td>
<td> push cursor position to jumpstack and restore cursor position from slot 4 </td> </tr>

<tr> <td> <B>{cpu.rest5}</B> </td>
<td> push cursor position to jumpstack and restore cursor position from slot 5 </td> </tr>

<tr> <td> <B>{cpu.rest6}</B> </td>
<td> push cursor position to jumpstack and restore cursor position from slot 6 </td> </tr>

<tr> <td> <B>{cpu.rest7}</B> </td>
<td> push cursor position to jumpstack and restore cursor position from slot 7 </td> </tr>

<tr> <td> <B>{cpu.rest8}</B> </td>
<td> push cursor position to jumpstack and restore cursor position from slot 8 </td> </tr>

<tr> <td> <B>{cpu.back}</B> </td>
<td> pop cursor position from jumpstack </td> </tr>

<tr> <td> <B>{cpu.context}</B> </td>
<td> push cursor position and goto instruction operand </td> </tr>

<tr> <td> <B>{cpu.datajump}</B> </td>
<td> jump to instruction operand in data window </td> </tr>

<tr> <td> <B>{cpu.labels}</B> </td>
<td> show labels on/off </td> </tr>

<tr> <td> <B>{cpu.importl}</B> </td>
<td> menu for importing labels from XAS/ALASM </td> </tr>

</table>

<CENTER> <H2> Debugger Keys - memory/disk editor window </H2> </CENTER>

<table border=2>

<tr> <td> <B>{mem.left}</B> </td>
<td> left </td> </tr>

<tr> <td> <B>{mem.right}</B> </td>
<td> right </td> </tr>

<tr> <td> <B>{mem.up}</B> </td>
<td> up </td> </tr>

<tr> <td> <B>{mem.down}</B> </td>
<td> down </td> </tr>

<tr> <td> <B>{mem.pgup}</B> </td>
<td> page up </td> </tr>

<tr> <td> <B>{mem.pgdn}</B> </td>
<td> page down </td> </tr>

<tr> <td> <B>{mem.switch}</B> </td>
<td> move between hex/ascii fields </td> </tr>

<tr> <td> <B>{mem.stline}</B> </td>
<td> goto start of line </td> </tr>

<tr> <td> <B>{mem.endline}</B> </td>
<td> goto end of line </td> </tr>

<tr> <td> <B>{mem.findtext}</B> </td>
<td> find text in memory / disk track </td> </tr>

<tr> <td> <B>{mem.findcode}</B> </td>
<td> find code with mask in memory / disk track </td> </tr>

<tr> <td> <B>{mem.goto}</B> </td>
<td> goto address </td> </tr>

<tr> <td> <B>{mem.mem}</B> </td>
<td> select memory editor </td> </tr>

<tr> <td> <B>{mem.diskphys}</B> </td>
<td> select disk editor (physical track) </td> </tr>

<tr> <td> <B>{mem.disklog}</B> </td>
<td> select disk editor (logical sectors) </td> </tr>

<tr> <td> <B>{mem.diskgo}</B> </td>
<td> select drive/track/sector in diskeditor </td> </tr>

<tr> <td> <B>{mem.pc}</B> </td>
<td> goto PC </td> </tr>

<tr> <td> <B>{mem.sp}</B> </td>
<td> goto SP </td> </tr>

<tr> <td> <B>{mem.bc}</B> </td>
<td> goto BC </td> </tr>

<tr> <td> <B>{mem.de}</B> </td>
<td> goto DE </td> </tr>

<tr> <td> <B>{mem.hl}</B> </td>
<td> goto HL </td> </tr>

<tr> <td> <B>{mem.ix}</B> </td>
<td> goto IX </td> </tr>

<tr> <td> <B>{mem.iy}</B> </td>
<td> goto IY </td> </tr>

</table>

</BODY></HTML>
